package com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.company;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaoshuidi.cloud.framework.common.util.date.DateUtils;
import com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.customerCompany.CustomerCompanyRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;

@Schema(description = "管理后台 - 租客合同列表 Response VO")
@Data
public class CompanySonsContractListRespVO {

    /**
    * 租客合同id
    * */
    private Long id;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
    * 企业用户id
    * */
    private Long customerCompanyId;
    /**
    * 企业名称
    * */
    private String companyName;

    /**
     * 合同审批状态
     * pending 待审批  | pass 审批通过 | reject 审批驳回
     */
    private String approveStatus;
    /**
     * 在线签约状态
     * SIGNED_PARTY_A 待甲方签约 |SIGNED_PARTY_B 待乙方签约  |SIGNED 已签约
     */
    private String signStatus;

    /**
     * 合同状态的
     * pending 待审批 | noSigned 待签约 | active 已生效 | normalEnd 正常结束 | abnormalEnd 非正常结束
     */
    private String contractStatus;
    /**
     * 合同节点
     * new 新签  | renewal 续约 | rentingOut 退租 | exchange 换房
     */
    private String contractNode;

    /**
    * 合同状态
    * */
    private String contractStatusName;

    /**
    * 是否换房
    * */
    private String isExchange;

    /**
     * 合同类型 paper纸质合同 | electronic 电子合同
     */
    private String contractSort;
    /**
    * 房间全称
    * */
    private String fullRoomName;
    /**
     * 租客姓名
     */
    private String customerName;

    /**
     * 租客手机号
     */
    private String customerPhone;

    /**
     * 开始日期
     */
    @Schema(description = "开始日期")
    @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    //@JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDate startTime;

    /**
     * 结束日期
     */
    @Schema(description = "结束日期")
    @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = TIME_ZONE_DEFAULT)
    private LocalDate endTime;
    /**
     * 租金
     */
    @Schema(description = "租金")
    private BigDecimal monthRent;

    /**
    * 租期
    * */
    private String tenancyTerm;
    /**
    * 押金
    * */
    private BigDecimal deposit;
    /**
    * 付几
    * */
    private Integer payMethodF;
    /**
    * 押几
    * */
    private Integer payMethodY;
    /**
    * 创建时间
    * */
    private LocalDate createTime;

    /**
    * 修改时间
    * */
    private LocalDate updateTime;
    /**
    * 付几押几
    * */
    private String payMethodYStr;

    @Schema(description = "累计应收金额")
    private BigDecimal accumulatedAmountReceivable;

    /**
     * 累计已收金额
     */
    @Schema(description = "累计已收金额")
    private BigDecimal accumulatedAmountReceived;

    /**
     * 房间地址
     */
    @Schema(description = "房间地址")
    private String roomAddress;

    /**
     * 合同状态编码
     */
    private String contractCode;
    /**
     * 线下合同编号
     */
    @Schema(description = "纸质合同编号")
    private String offlineNo;

    /**
     * 实际结束日期
     */
    @Schema(description = "合同实际结束日期")
    private LocalDate actualEndTime;
    /**
     * 签约时间
     */
    @Schema(description = "签约时间")
    private LocalDate signedTime;

    /**
     * 收租类型 advanced  提前收租天 | fixed 固定当月日期 日 | prefixed 固定上月日期 日,
     */
    @Schema(description = "收款日期方式")
    private String rentPayWay;
    /**
     * 提前收租天数
     */
    @Schema(description = "收款日期天数")
    private Integer advancedDays;
    /**
     * 客户来源 1 来电 |2 58同城 | 3 赶集网 | 4 安居客 | 5 官网预约 | 6 微信 | 7 自来客 | 8 转介绍 | 9 中介 | 10 其他 |11 房天下 | 12 豆瓣 | 13 百姓网 | 14 闲鱼 | 15 微博 | 16 官网在线 | 17 运营管理 | 18 手机APP | 19 贝壳
     */
    @Schema(description = "来源")
    private String source;
    /**
     * 签约人姓名
     */
    @Schema(description = "签约人")
    private String signerName;
    /**
     * 合同发起人姓名（合同创建人）
     */
    @Schema(description = "合同发起人")
    private String originatorName;
    /**
     * 备注
     */
    @Schema(description = "合同备注")
    private String remark;
    /**
     * 合同附件地址
     */
    @Schema(description = "合同附件地址")
    private String contractUrl;
    /**
     * 证件类型
     */
    @Schema(description = "证件类型")
    private String customerIdType;
    /**
     * 证件号码
     */
    @Schema(description = "证件号码")
    private String customerIdNumber;
    /**
     * 紧急联系人姓名
     */
    @Schema(description = "紧急联系人姓名")
    private String emergencyContactName;
    /**
     * 紧急联系人手机号
     */
    @Schema(description = "紧急联系人电话")
    private String emergencyContactPhone;
    /**
     * 乙方联系地址（租客地址）
     */
    @Schema(description = "租客地址")
    private String renterAddress;
    /**
     * 租客邮编
     */
    @Schema(description = "租客邮编")
    private String renterPostalCode;
    /**
     * 租客邮箱
     */
    @Schema(description = "租客邮箱")
    private String renterEmail;
    /**
     * 国籍
     */
    @Schema(description = "租客国籍")
    private String customerNationality;
    /**
     * 乙方居住类型 1 单身合租 | 2 非单身合租
     */
    @Schema(description = "居住类型")
    private String customerHabitancyType;
    /**
     * 证件附件地址
     */
    @Schema(description = "证件附件地址")
    private String certificateUrl;


    /**
     * 银行卡号
     */
    @Schema(description = "银行卡号")
    private String customerCreditCard;

    /**
     * 所属银行
     */
    @Schema(description = "所属银行")
    private String customerBank;

    /**
     * 所属支行
     */
    @Schema(description = "所属支行")
    private String customerBankArea;

    /**
     * 紧急联系人关系
     */
    @Schema(description = "紧急联系人关系")
    private String emergencyContactRelationship;

    /**
     * 紧急联系人关系
     */
    @Schema(description = "合同状态中文")
    private String contractStatusStr;


    /**
     * 客户类型 personal 个人客户 | company 企业客户
     */
    @Schema(description = "客户类型")
    private String customerType;

    /**
     * c端用户id
     */
    private Long memberId;

    /**
     * 关联公寓
     */
    private Long apartmentId;

    /**
     * 公寓名称
     */
    private String apartmentName;

    /**
     * 关联房间
     */
    private Long roomId;

    /**
     * 房间名称
     */
    private String roomName;

    /**
     * 租客学历
     */
    private String customerEducation;

    /**
     * 租客岗位
     */
    private String customerPost;
    /**
     *来源于哪份企业合同
     */
    private Long companyContractId;
    /**
     * 企业信息
     */
    private CustomerCompanyRespVO customerCompany;
    /**
     * 企业承担方式
     */
    private Integer orderShareMethod;

    @Schema(description = "0非手写板签约1手写板签约")
    private Integer signType;

    /**
     * 管家id
     */
    private Long butlerId;

    /**
     * 管家姓名
     */
    private String butlerName;

    /**
     * 网签备案状态  0 未网签备案 | 1 已网签备案 | 2 已退租备案 | 3 撤销合同备案
     */
    private Integer recordStatus;


}
